/*
*
* This file is part of Luces de 1984 (L1).
* Copyright (C) <2017>  <alkeon> [alkeon@autistici.org]
   
* L1 is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* L1 is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with l1.  If not, see <http://www.gnu.org/licenses/>.
*
*/
#include <iostream>
#include <string>
#include "metodos.h"
#include "gp.h"
#include <curses.h>
#include <ncurses.h>
using namespace std;

int main (){
	//Iniciar pantalla (NCURSES)
	initscr();
	//Deshabilita el buffer de líneas
	nocbreak();
	//Visibilidad del ratón
	curs_set(FALSE);
	//Incia el fondo y los colores (no se usan)
	start_color();
	// Crea el objeto juego de la clase juego :D
	juego juego;
	//Método de la clase juego conocido como inicio
	juego.inicio();
	//Fin del juego y con ello, la ventana
	endwin();
}

void juego::inicio(){
	printw("Bienvenido a Luces de 1984\n");//0
	printw("un juego creado por Alkeon.\n");
	printw("Guarde su ira para juegos con largos procesos de desarrollo\n");
	printw(" y un equipo enorme de desarrollo, aquí estamos para disfrutar.\n");
	//Iniciando personajes
	Personaje molde(0,30,0,0,1);
	Personaje Winston(0,20,0,0,0);
	//Final 1	
	Winston.psicosis=1;
	//Final 2
	Winston.soledad=1;
	//Final 3
	Winston.esperpento=1;
	//Final 4
	Winston.hola_dave=1;
	Winston.vida=200;
	Winston.ataque=20;
	molde.vida=80;
	molde.ataque=4;
	//Menú
	this->menu(Winston,molde);
}
void juego::printa(std::string linea){
	for(int i=15;i>0;i--){
		this->texto[i]=this->texto[i-1];
	}
	this->texto[0]=linea;
	clear();
	for(int e=15;e>=0;e--){
		printw(this->texto[e].c_str());
	}
}
void juego::pausa(){
	printw("Pulsa cualquier tecla.\n");
	getch();
}

void juego::menu(Personaje& v, Personaje& h){
	printw("En este menú puedes escoger distintos puntos:\n");
	printw("1.- Guía sencilla y recomendaciones\n");
	printw("2.- Comenzar el juego\n");
	printw("3.- Cargar juego\n");
	printw("4.- Créditos\n");
	printw("5.- Salir\n");
	char str[2];
	getstr(str);
	if(str[0] == '1'){
		this->tutorial(); menu(v,h);
	}
	if(str[0] == '2'){
		this->escoger_opciones(v,h);

	}
	if(str[0] == '3'){
		vista_previa_partida("save.dat");
	}
	if(str[0] == '4'){
		this->creditos(v); menu(v,h);
	}
}

void juego::tutorial(){
	clear();
	printw("Narrador:Buenas soy el narrador de esta historia.\n");
	printw("Alkeon me tiene (y no me paga) para explicar todo el juego.\n");
	printw("Como veis al intervenir un personaje ocurre como en el teatro escrito.\n");
	printw("Si sigo hablando no se repite. Solo se espera a que cambie de personaje.\n");
	printw("Como consejos, no escribas letras si te piden números y este juego es dinámico.\n");
	printw("Cada vez que se puede, es modificado de ahí las actualizaciones.\n");
	printw("Si tuvieras alguna queja, se las mandas a Alkeon.\n");
	printw("¿No sabes cómo? Recuerda su página es https://autistici.org/alkeon/\n\n");
}
void juego::escoger_opciones(Personaje& v, Personaje& h){
	clear();
	printw("Antes de empezar la partida puedes escoger ciertas opciones que te hacen la experiencia de juego más personalizable y compatible con tu modo de juego.\n");

	if(this->guardados_automaticos!=2){
		this->opcion_guardado(v,h);
	}

	this->opcion_nombre(v,h);

	this->preguntas_principales(v,h);
}
void juego::opcion_guardado(Personaje& v, Personaje& h){
	
	printw("¿Prefieres guardados automáticos?\n");
	printw("1.- Sí\n");
	printw("2.- No\n");
	char str[2];
	getstr(str);
	if(str[0] == '1'){
		this->guardados_automaticos=1;
	}
	if(str[0] == '2'){
		this->guardados_automaticos=2;
	}
}
void juego::opcion_nombre(Personaje& v, Personaje& h){
	clear();
	printw("Antes de empezar puedes escoger otro nombre distinto del predeterminado\n");
	printw("Te recomendamos por la historia y el tema principal que mantengas Winston\n");
	printw("Como referencia a uno de los finales puedes usar el nombre de Dave\n");
	printw("1.- Dejar el nombre de Winston\n");
	printw("2.- Quiero llamarme Dave\n");
	printw("3.- Cambiar el nombre\n");
	char str[2];
	getstr(str);
	if(str[0] == '1'){
		v.nombre="Winston";
	}
	if(str[0] == '2'){
		v.nombre="Dave";
	}
	if(str[0] == '3'){
		printw("Elige tu nombre:\n");
		char nombre2[20];
		getstr(nombre2);
		string nombre_str(nombre2);
		v.nombre=nombre_str;
	}

}

void juego::creditos(Personaje& v){
	clear();
	printw("La licencia de este juego es GNU GPL versión 3.\n");
	printw("Puedes saber más sobre este juego en https://autistici.org/alkeon/");
	printw("Dedicatoria:\n");
	printw("Por los que se van, por los que se quedan.\n");
	printw("A todos ellos, gracias.\n\n");
}

